#include <iostream>
#include <string>
#include<stack>
#include<queue>
#include <fstream>

using namespace std;
void err() // 报错函数
{
    cout<<"Error"<<endl;
    exit(-1);
}
double cal(queue<char>&exp)    //计算后缀形式的函数并检验运算符是否正确使用
{
    stack<double> res;
    if(exp.empty())return 0;
    if(exp.front()<'0'|| exp.front()>'9') err();
    while(!exp.empty())
    {
        double a=0;
        double e=0.1;
        bool point=false;          //小数点开关；
        while(exp.front()>='0'&&exp.front()<='9'&&point==false)
        {
            a=a*10+(exp.front()-'0');    //将小数点前的数字部分转化为double存储在a
            exp.pop();
            if(exp.front()=='.')
            {
                exp.pop();
                point=true;
                break;

            }
            if(exp.empty()) res.push(a);
            if(exp.front()=='+'||exp.front()=='-'||exp.front()=='*'||exp.front()=='/')
            {
                res.push(a);
                a=0;
                point=false;
                break;
            }
            if(exp.front()==' ')
            {
                res.push(a);
                a=0;
                point=false;
                exp.pop();
                break;
            }
        }
        while(point==true)                //实现小数部分的转化与之前的整数部分相加压到栈里面。
        {
            
            if(exp.front()==' ')
            {                
                res.push(a);
                a=0;
                point=false;
                e=0.1;
                exp.pop();
                break;

            }
            if(exp.front()=='+'||exp.front()=='-'||exp.front()=='*'||exp.front()=='/')
            {
                res.push(a);
                a=0;
                e=0.1;
                point=false;
                break;
            }
            if(exp.empty())
            {
                res.push(a);
                e=0.1;
                break;
            }

            a=a+(exp.front()-'0')*e;
            exp.pop();
            if(exp.front()>='0'&&exp.front()<='9')e=e*0.1;

            
        }

        if(exp.front()=='+'||exp.front()=='-'||exp.front()=='*'||exp.front()=='/')
        {
            if(res.size()<2) err();                       //检验运算符是否与数字对应
            double b=0; double c=0;double d=0;
            b=res.top();
            res.pop();
            c= res.top();
            res.pop();
            switch(exp.front())
            {
                case '+': d=c+b; break;
                case '-': d=c-b; break;
                case '*': d=c*b; break;
                case '/': if(b==0) err();
                d=c/b; break;

            }
            exp.pop();
            res.push(d);

        }
        
    }
    if(res.size()!=1)err();   //检验数字与运算符是否对应
    return res.top();

}
void tran(queue<char>&exe ,queue<char>&con) // 转化为后缀形式并检验括号是否匹配以及小数点是否正确检验运算符是否连续出现
{                          
    stack<char>  op;        
    char c;
    bool point=false;
    while(true)
    {
        if(con.empty())break;
        c=con.front();
        con.pop();
        
        if(c>='0'&&c<='9')exe.push(c);
        else if(c=='.')
        {
            if(point==false)
            {
                exe.push(c);
                point=true;
            }
            else err();        
        }
        else if(c=='+'||c=='-')
        {
            if(exe.front()==' ') err();       //检验运算符是否连续出现
            exe.push(' ');                   //每个数字之间用空格隔开
            while(!op.empty()&&op.top()!='(')
            {
                exe.push(op.top());
                op.pop();

            }
            op.push(c);
            point=false;

        }
        else if(c=='(')
        {
            op.push(c);
            
        }
        else if (c==')')
        {
            if(op.empty()) err();
            while(op.top()!='(')
            {
                exe.push(op.top());
                op.pop();
                if(op.empty())err();

            }
            op.pop();

        }
        else if(c=='*'||c=='/')
        {
            if(exe.front()==' ') err();     //检验运算符是否连续出现
            exe.push(' ');
            op.push(c);
            point=false;
        }
    }
    while(!op.empty())
    {
        if(op.top()=='(') err();
        exe.push(op.top());
        op.pop();
    }
    con.pop();
}
int main(int argc ,char*argv[])
{
    string input;
    getline(cin, input);
    queue<char> exp;
    queue<char>con;
    for(char c :input)
    {
        con.push(c);
    }
    tran(exp,con);
    cout<<cal(exp)<<endl;
    return 0;
}